﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tanmia.Basis.Core;

namespace Tanmia.Warehouse.Core
{
    /// <summary>
    /// تمثل المواقع داخل أحد المستودعات
    /// مثل الرفوف, الطبليات, المساحات الفراغة المخصصة للتخزين
    /// </summary>
    public class Location : BaseBusinessObject, IStorageSection
    {
        private int locationID;
        private string notes;
        private Store store;

        /// <summary>
        /// رقم تعريف الموقع
        /// </summary>
        public virtual int LocationID
        {
            get { return locationID; }
            set { SetValue<int>("LocationID", ref locationID, value); }
        }

        /// <summary>
        /// ملاحظات
        /// </summary>
        public virtual string Notes
        {
            get { return notes; }
            set { SetValue<string>("Notes", ref notes, value); }
        }

        /// <summary>
        /// المستودع الذي يتبع له الموقع الحالي
        /// </summary>
        public virtual Store Store
        {
            get { return store; }
            set { SetValue<Store>("Store", ref store, value); }
        }


        #region IStorageSection Members

        private string name;
        private string abbreviation;

        /// <summary>
        /// اسم الموقع أو الرف
        /// </summary>
        public virtual string Name
        {
            get { return name; }
            set { SetValue<string>("Name", ref name, value); }
        }

        /// <summary>
        /// الحروف الأولى أو الإختصار لإسم الموقع أو الرف
        /// </summary>
        public virtual string Abbreviation
        {
            get { return abbreviation; }
            set { SetValue<string>("Abbreviation", ref abbreviation, value); }
        }

        /// <summary>
        /// الغرف الموجودة داخل المستودع
        /// </summary>
        [Obsolete("يجب عدم إستعمال هذه الخاصية لأن الرف لايملك ما هو أصغر منه في نظام تنمية للمستودعات")]
        public virtual IList<IStorageSection> Subsection
        {
            get { throw new NotImplementedException(); }
            set { throw new NotImplementedException(); }
        }

        #endregion
    }
}
